package test.codegen;
import ins.framework.mybatis.generator.GenConfig;
import ins.framework.mybatis.generator.GenParam;
import ins.framework.mybatis.generator.GenType;
import ins.framework.mybatis.generator.Generator;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class CodeGenerator {

    public static void main(String[] args) {

        /**
         * 一、每一个表创建两个，一个带下划线的一个不带下划线的。
         * 二、用有下划线的表生成所有相关文件，PO、VO、DAO、XML等。
         * 三、生成的BASE中的文件不要进行修改（但可以自行添加序列的赋值语句）。
         **/

        createBaseFiles("system", "saa_api_log");//注意检查下面数据库相关配置
//        createBaseFiles("biCalendar", "_fclp_bi_calendar");//注意检查下面数据库相关配置

    }


    /**
     * 通用设置，请不要改动
     */
    private static void createBaseFiles(String packageName, String tabName) {
        List<GenParam> paramList = new ArrayList<GenParam>();
        /**
         * 请保持生成参数的完整，不要注释
         */
        // paramList.add(new GenParam("commondata", new String[] {
        // "Prp_D_Maim_Item" }));
        paramList.add(new GenParam(packageName, new String[]{tabName}));
        GenConfig gc = new GenConfig();
        gc.setBasePackage("com.saa");
        // 设置要忽略的表名前缀，默认空
        gc.setIgnoreTablePrefixs(new String[]{"prpl", "prpd"});
        // 设置PO是否保留前缀(设置忽略表名前缀时)，默认true
        gc.setKeepPrefixForPO(true);
        // 设置取操作时间函数，默认数据库自适应
        // gc.setOperateTimeForHisFunc("sysdate");
        // 设置是否默认开启二级缓存（影响base中的MapperXML），默认false
        gc.setDefaultCache(false);
        /// 是否启用删除标志模式（不真删除，只是设置标志deleted_flag字段为1），默认false
        gc.setDeletedFlagMode(true);
        /** 设置忽略下划线，默认为false */
        gc.setDbColumnUnderline(false);
        // mysql 数据库相关配置
        // 设置基本保存目录（Java源代码根目录）
        String strDir = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        System.out.println("strDir路径1==="+strDir);
        strDir = strDir.substring(1).replace("/target/classes/", "/src/main/java");
        String osName = System.getProperty("os.name");
        if (!StringUtils.startsWithIgnoreCase(osName, "Windows")) {
            //非Windows环境
            strDir = "/" + strDir;
        }
        System.out.println("osName==="+osName);
        System.out.println("strDir路径==="+strDir);
        gc.setSaveDir(strDir);
        // 可代码指定vo和xml的位置
//         gc.setSaveDirForVo(new File(gc.getSaveDir(),
//         "../../../../misc-vo/src/main/java").getAbsolutePath());
//         gc.setSaveDirForXml(new File(gc.getSaveDir(),
//         "../resources/mapper").getAbsolutePath());

//        gc.setDbDriverName("com.mysql.jdbc.Driver");
        gc.setDbDriverName("com.mysql.cj.jdbc.Driver");
        gc.setDbUser("root");
//		gc.setDbSchema("NCLAIMQY");// Oracle的schema必需设置，且为大写
        gc.setDbPassword("sudcq2323");
//		gc.setDbUrl("jdbc:oracle:thin:@192.168.10.215:1521:orcl");

//        gc.setDbUrl("jdbc:mysql://127.0.0.1:3306/ut_fclp_core?characterEncoding=utf8&useSSL=false");
        gc.setDbUrl("jdbc:mysql://49.232.101.213:3306/saa-app?characterEncoding=utf8&useSSL=false");

        // 支持生成的文件类型:生成PO、BASE_MAPPER_XML（自动覆盖）、Dao、VO、MapperXML（不覆盖）
        gc.setGenTypes(
                new GenType[]{GenType.VO, GenType.PO, GenType.DAO, GenType.BASE_MAPPER_XML, GenType.MAPPER_XML});
        Generator generator = new Generator();
        generator.setGenConfig(gc);
        generator.setParamList(paramList);
        try {
            generator.generate();
            System.out.println(tabName + " 代码生成成功!");
        } catch (Exception ex) {
            System.out.println(tabName + " 代码生成失败!\n");
        }
    }
}
